#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int global_1;
int global_2 = 10;

int main()
{
    // 依次展现进程地址空间
    printf("代码区：%p\n", main);
    char* p1 = "x"; //注意：这里不能写'x'，因为这个是整型，ASCII里为120
    printf("字符常量区：%p\n", p1);
    printf("已初始化的全局变量：%p\n", &global_2);
    printf("未初始化的全局变量：%p\n", &global_1);
    char* p = (char*)malloc(100);
    printf("堆区：%p\n", p); //mmap 分配区随机化（ASLR）,导致堆区看起来不是在全局数据区的上方
    char ch = 'x';
    printf("栈区：%p\n", &ch);

    return 0;
}
